// 引入ali-oss
const OSS = require('ali-oss'); // 需要 npm i ali-oss

/**
 *  [accessKeyId] {String}：通过阿里云控制台创建的AccessKey。
 *  [accessKeySecret] {String}：通过阿里云控制台创建的AccessSecret。
 *  [bucket] {String}：通过控制台或PutBucket创建的bucket。
 *  [region] {String}：bucket所在的区域， 默认oss-cn-hangzhou。
 */
const client = new OSS({
  region: 'oss-ap-southeast-1', // oss的所在区域 https://help.aliyun.com/document_detail/31837.html?spm=a2c6h.13066369.0.0.11384123BRZZFf
  // 云账号AccessKey有所有API访问权限，建议遵循阿里云安全最佳实践，部署在服务端使用RAM子账号或STS，部署在客户端使用STS。
  //   LTAI5tFh4HPb9pYehrxscDb6
  // AVAqzFRyEnkUMAWe8ppm7i35u4cHBN
  accessKeyId: 'LTAI5tFh4HPb9pYehrxscDb6', // 阿里云账号  本文的第6大点当中可以获取到
  accessKeySecret: 'AVAqzFRyEnkUMAWe8ppm7i35u4cHBN',
  bucket: 'movetp', //  你创建的 oss的buket的名称
});

/**
 *  上传文件，大小不能超过5GB
 * @param {string} ObjName OSS的储存路径和文件名字
 * @param {string} fileUrl 本地文件
 *
 * @retruns Promise
 */

export const put = async (ObjName, fileUrl) => {
  try {
    const result = await client.put(`${ObjName}`, fileUrl);
    // AAA为文件夹， ObjName为文件名字,可以只写名字，就直接储存在 bucket 的根路径
    console.log(result);
    return result;
  } catch (e) {
    console.log(e);
  }
  return '';
};

/**
 * 生成随机文件名称
 * 规则八位随机字符，加下划线连接时间戳
 */
export const getFileNameUUID = () => {
  function rx() {
    // eslint-disable-next-line no-bitwise
    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
  }
  return `${+new Date()}_${rx()}${rx()}`;
};
